Electronic Design Automation (EDA) tools are a category of tools used for designing and producing electronic systems ranging from printed circuit boards (PCBs) to integrated circuits. Before EDA, integrated circuits were designed by hand and manually laid out. Current EDA tools are used in designing digital circuitry, as well as incorporation of analog designs and mixed systems. Further, current digital flows are extremely modular. EDA is divided into many, and sometimes overlapping, sub-areas. They mostly align with the path of manufacturing from design generation to mask generation.
In general, most EDA tools are batch run tools and can require significant runtimes, from several minutes to several days. While advancements in EDA development include attempts to reduce runtime, certain steps perform best when they are run with a large amount of design data. The large volume of design data results in longer than desired runtimes. This may be the case, for example, in placement driven synthesis. Placement driven synthesis is done by tools such as International Business Machines Corporation (IBM)'s PDSrtl tool. Breaking apart the design or steps is not always the best engineering decision because some jobs have long runtimes and unexpected iterations can result in substantially increased costs.
One attempt at reducing costly iterations includes writing relevant design data at particular checkpoints of a long running job. The job can use the checkpoint design data and save time. However, such an approach involves overhead in restarting the job. Further, there may be excess data storage requirements, and the loaded checkpoint must exactly match the in-core data from the initial process. A further problem with such an approach is that a user may wish to control a specific step in the application, but may not with the checkpoint method.
Another approach used by IBM's PDSrtl tool allows the reading of a specific file at predefined intervals. The intervals are similar to the checkpoints previously discussed. However, such reading of specific files is relatively difficult to use. A user must have detailed development knowledge of the placement driven synthesis application. Further, the mechanism is error prone and can significantly harm the design process. For the above reasons, what is needed is a way to control a long running EDA application.